#ifndef __LIB_AGORA_ADMIN_CHANNELRIGHT_H__
#define __LIB_AGORA_ADMIN_CHANNELRIGHT_H__

#include <vector>
#include "AdminIChannelRight.h"

namespace AgoraAdmin
{

	class	ChannelRight : public IChannelRight
	{
	public:
		ChannelRight(void);
		ChannelRight(unsigned int id, const std::vector<bool>& right);
		~ChannelRight(void);
		const unsigned int	GetId(void) const;
		void				SetChannelRight(const bool canCreate, const bool canDelete, const bool canEdit, const bool canEditUser, const bool canTalk, const bool canWrite, const bool canKick, const bool canBan);
		const bool			GetCanCreateChannelChild(void) const;
		void				SetCanCreateChannelChild(const bool value);
		const bool			GetCanDeleteChannelChild(void) const;
		void				SetCanDeleteChannelChild(const bool value);
		const bool			GetCanEditChannel(void) const;
		void				SetCanEditChannel(const bool value);
		const bool			GetCanEditUserRight(void) const;
		void				SetCanEditUserRight(const bool value);
		const bool			GetCanTalkChannel(void) const;
		void				SetCanTalkChannel(const bool value);
		const bool			GetCanWriteChannel(void) const;
		void				SetCanWriteChannel(const bool value);
		const bool			GetCanKickUser(void) const;
		void				SetCanKickUser(const bool value);
		const bool			GetCanBanUser(void) const;
		void				SetCanBanUser(const bool value);

	private:
		unsigned int		_id;
		std::vector<bool>	_right;
	};

}

#endif